home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 23 / AMIGAplus Sonderheft 23 (2000)(Falke)(DE)[!].iso / Updates / Librarys / zee_ini_library / Sources / C / Bin2H / Bin2H.s < prev    next >
Text File  |  1999-08-05  |  9KB  |  601 lines

  1.  
  2. ; Storm C Compiler
  3. ; Work:Sources/C/Bin2H/Bin2H.c
  4.  
  5.  
  6.     XREF    _exit
  7.     XREF    _ftell
  8.     XREF    _fseek
  9.     XREF    _fread
  10.     XREF    _fprintf
  11.     XREF    _printf
  12.     XREF    _ferror
  13.     XREF    _fclose
  14.     XREF    _fopen
  15.     XREF    _fputs
  16.     XREF    _std__in
  17.     XREF    _std__out
  18.     XREF    _std__err
  19.  
  20.     SECTION ":0",CODE
  21.  
  22.  
  23. ;int StrCmpNC(char *string1, char *string2)
  24.     XDEF    _StrCmpNC
  25. _StrCmpNC
  26. L55    EQU    -2
  27.     link    a5,#L55
  28.     movem.l    d2/a2,-(a7)
  29.     move.l    $C(a5),a0
  30.     move.l    $8(a5),a1
  31. L41
  32. ;  
  33. L42
  34. ;  
  35. ;    c1 = (((c1 = *string1++) >= 'a' && c1 <= 'z') ? c1 - ' ' : c
  36.     move.b    (a1)+,d1
  37.     cmp.b    #$61,d1
  38.     blo.b    L45
  39. L43
  40.     cmp.b    #$7A,d1
  41.     bhi.b    L45
  42. L44
  43.     moveq    #0,d0
  44.     move.b    d1,d0
  45.     sub.l    #$20,d0
  46.     bra.b    L46
  47. L45
  48.     moveq    #0,d0
  49.     move.b    d1,d0
  50. L46
  51.     move.b    d0,d1
  52. ;    c2 = (((c2 = *string2++) >= 'a' && c2 <= 'z') ? c2 - ' ' : c
  53.     move.b    (a0)+,d0
  54.     cmp.b    #$61,d0
  55.     blo.b    L49
  56. L47
  57.     cmp.b    #$7A,d0
  58.     bhi.b    L49
  59. L48
  60.     and.l    #$FF,d0
  61.     sub.l    #$20,d0
  62.     bra.b    L50
  63. L49
  64.     and.l    #$FF,d0
  65. L50
  66. ;    if (c1 != c2)
  67.     cmp.b    d0,d1
  68.     beq.b    L52
  69. L51
  70. ;      return(-1);
  71.     moveq    #-1,d0
  72.     movem.l    (a7)+,d2/a2
  73.     unlk    a5
  74.     rts
  75. L52
  76.     tst.b    d1
  77.     beq.b    L54
  78. L53
  79.     tst.b    d0
  80.     bne.b    L42
  81. L54
  82. ;  return(0);
  83.     moveq    #0,d0
  84.     movem.l    (a7)+,d2/a2
  85.     unlk    a5
  86.     rts
  87.  
  88. ;int ConvertBinary()
  89.     XDEF    _ConvertBinary
  90. _ConvertBinary
  91. L75    EQU    -$1C
  92.     link    a5,#L75
  93.     movem.l    d2-d4,-(a7)
  94. L60
  95. ;  unsigned long rpos = 0;
  96.     moveq    #0,d4
  97. ;  while (rlen = fread(Buffer,1,LINESIZE,infile))
  98.     bra    L73
  99. L61
  100. ;  
  101. ;    if (ferror(infile)) 
  102.     move.l    _infile(a4),-(a7)
  103.     bsr    _ferror
  104.     addq.w    #4,a7
  105.     tst.l    d0
  106.     beq.b    L63
  107. L62
  108. ;    if (ferror(infile)) return CONV_ERROR_RE
  109.     moveq    #1,d0
  110.     movem.l    (a7)+,d2-d4
  111.     unlk    a5
  112.     rts
  113. L63
  114. ;    fputs("\n\t",outfile);
  115.     move.l    _outfile(a4),-(a7)
  116.     move.l    #L56,-(a7)
  117.     bsr    _fputs
  118.     addq.w    #$8,a7
  119. ;    for (i = 0;
  120.     moveq    #0,d2
  121.     bra.b    L70
  122. L64
  123. ;    
  124. ;      rpos++;
  125.     addq.l    #1,d4
  126. ;      fprintf(outfile,"0x%02x",*(Buffer+i));
  127.     lea    -$10(a5),a0
  128.     moveq    #0,d0
  129.     move.b    0(a0,d2.l),d0
  130.     move.l    d0,-(a7)
  131.     move.l    #L57,-(a7)
  132.     move.l    _outfile(a4),-(a7)
  133.     bsr    _fprintf
  134.     add.w    #$C,a7
  135. ;      if ((rpos != len) || i != rlen-1)
  136.     cmp.l    _len(a4),d4
  137.     bne.b    L66
  138. L65
  139.     move.l    d3,d0
  140.     subq.l    #1,d0
  141.     cmp.l    d0,d2
  142.     beq.b    L67
  143. L66
  144. ;        fputs(",",outfile);
  145.     move.l    _outfile(a4),-(a7)
  146.     move.l    #L58,-(a7)
  147.     bsr    _fputs
  148.     addq.w    #$8,a7
  149. L67
  150. ;      if (i != rlen-1) 
  151.     move.l    d3,d0
  152.     subq.l    #1,d0
  153.     cmp.l    d0,d2
  154.     beq.b    L69
  155. L68
  156. ;      if (i != rlen-1) fputs(" ",outfile);
  157.     move.l    _outfile(a4),-(a7)
  158.     move.l    #L59,-(a7)
  159.     bsr    _fputs
  160.     addq.w    #$8,a7
  161. L69
  162.     addq.l    #1,d2
  163. L70
  164.     cmp.l    d3,d2
  165.     blo.b    L64
  166. L71
  167. ;    if (ferror(outfile)) 
  168.     move.l    _outfile(a4),-(a7)
  169.     bsr    _ferror
  170.     addq.w    #4,a7
  171.     tst.l    d0
  172.     beq.b    L73
  173. L72
  174. ;    if (ferror(outfile)) return CONV_ERROR_
  175.     moveq    #2,d0
  176.     movem.l    (a7)+,d2-d4
  177.     unlk    a5
  178.     rts
  179. L73
  180.     move.l    _infile(a4),-(a7)
  181.     pea    $10.w
  182.     pea    1.w
  183.     pea    -$10(a5)
  184.     bsr    _fread
  185.     add.w    #$10,a7
  186.     move.l    d0,d3
  187.     bne    L61
  188. L74
  189. ;  return(0);
  190.     moveq    #0,d0
  191.     movem.l    (a7)+,d2-d4
  192.     unlk    a5
  193.     rts
  194.  
  195. ;int ConvertASCII()
  196.     XDEF    _ConvertASCII
  197. _ConvertASCII
  198. L96    EQU    -$1E
  199.     link    a5,#L96
  200.     movem.l    d2-d4,-(a7)
  201. L77
  202. ;  unsigned long rpos = 0;
  203.     moveq    #0,d4
  204. ;  while (rlen = fread(Buffer,1,LINESIZE,infile))
  205.     bra    L94
  206. L78
  207. ;  
  208. ;    if (ferror(infile)) 
  209.     move.l    _infile(a4),-(a7)
  210.     bsr    _ferror
  211.     addq.w    #4,a7
  212.     tst.l    d0
  213.     beq.b    L80
  214. L79
  215. ;    if (ferror(infile)) return CONV_ERROR_RE
  216.     moveq    #1,d0
  217.     movem.l    (a7)+,d2-d4
  218.     unlk    a5
  219.     rts
  220. L80
  221. ;    fputs("\n\t",outfile);
  222.     move.l    _outfile(a4),-(a7)
  223.     move.l    #L56,-(a7)
  224.     bsr    _fputs
  225.     addq.w    #$8,a7
  226. ;    for (i = 0;
  227.     moveq    #0,d2
  228.     bra    L91
  229. L81
  230. ;    
  231. ;      rpos++;
  232.     addq.l    #1,d4
  233. ;      cbyte = Buffer[i];
  234.     lea    -$10(a5),a0
  235.     move.b    0(a0,d2.l),d0
  236. ;      if ((cbyte > 31) && (cbyte < 128))
  237.     cmp.b    #$1F,d0
  238.     bls.b    L84
  239. L82
  240.     cmp.b    #$80,d0
  241.     bhs.b    L84
  242. L83
  243. ;        fprintf(outfile,"'%c'",cbyte);
  244.     and.l    #$FF,d0
  245.     move.l    d0,-(a7)
  246.     move.l    #L76,-(a7)
  247.     move.l    _outfile(a4),-(a7)
  248.     bsr    _fprintf
  249.     add.w    #$C,a7
  250.     bra.b    L85
  251. L84
  252. ;        fprintf(outfile,"0x%02x",cbyte);
  253.     and.l    #$FF,d0
  254.     move.l    d0,-(a7)
  255.     move.l    #L57,-(a7)
  256.     move.l    _outfile(a4),-(a7)
  257.     bsr    _fprintf
  258.     add.w    #$C,a7
  259. L85
  260. ;      if ((rpos != len) || i != rlen-1)
  261.     cmp.l    _len(a4),d4
  262.     bne.b    L87
  263. L86
  264.     move.l    d3,d0
  265.     subq.l    #1,d0
  266.     cmp.l    d0,d2
  267.     beq.b    L88
  268. L87
  269. ;        fputs(",",outfile);
  270.     move.l    _outfile(a4),-(a7)
  271.     move.l    #L58,-(a7)
  272.     bsr    _fputs
  273.     addq.w    #$8,a7
  274. L88
  275. ;      if (i != rlen-1) 
  276.     move.l    d3,d0
  277.     subq.l    #1,d0
  278.     cmp.l    d0,d2
  279.     beq.b    L90
  280. L89
  281. ;      if (i != rlen-1) fputs(" ",outfile);
  282.     move.l    _outfile(a4),-(a7)
  283.     move.l    #L59,-(a7)
  284.     bsr    _fputs
  285.     addq.w    #$8,a7
  286. L90
  287.     addq.l    #1,d2
  288. L91
  289.     cmp.l    d3,d2
  290.     blo    L81
  291. L92
  292. ;    if (ferror(outfile)) 
  293.     move.l    _outfile(a4),-(a7)
  294.     bsr    _ferror
  295.     addq.w    #4,a7
  296.     tst.l    d0
  297.     beq.b    L94
  298. L93
  299. ;    if (ferror(outfile)) return CONV_ERROR_
  300.     moveq    #2,d0
  301.     movem.l    (a7)+,d2-d4
  302.     unlk    a5
  303.     rts
  304. L94
  305.     move.l    _infile(a4),-(a7)
  306.     pea    $10.w
  307.     pea    1.w
  308.     pea    -$10(a5)
  309.     bsr    _fread
  310.     add.w    #$10,a7
  311.     move.l    d0,d3
  312.     bne    L78
  313. L95
  314. ;  return(0);
  315.     moveq    #0,d0
  316.     movem.l    (a7)+,d2-d4
  317.     unlk    a5
  318.     rts
  319.  
  320. ;int main(int argc,char **argv)
  321.     XDEF    _main
  322. _main
  323. L137    EQU    -6
  324.     link    a5,#L137
  325.     movem.l    d2-d4/a2,-(a7)
  326.     movem.l    $8(a5),d3/a2
  327. L110
  328. ;  char Mode = BINARY;
  329.     moveq    #0,d4
  330. ;  int conv = 0;
  331.     moveq    #0,d2
  332. ;  printf("Bin2H v%d.%02d (c) 1999 by Basty/Seasons (%s, %s).\n\n",
  333.     move.l    #L97,-(a7)
  334.     move.l    #L98,-(a7)
  335.     clr.l    -(a7)
  336.     pea    1.w
  337.     move.l    #L99,-(a7)
  338.     bsr    _printf
  339.     add.w    #$14,a7
  340. ;  if (argc != 3 && argc != 4) 
  341.     cmp.l    #3,d3
  342.     beq.b    L113
  343. L111
  344.     cmp.l    #4,d3
  345.     beq.b    L113
  346. L112
  347. ;  if (argc != 3 && argc != 4) goto 
  348.     bra    L132
  349. L113
  350. ;  if (argc == 4)
  351.     cmp.l    #4,d3
  352.     bne.b    L117
  353. L114
  354. ;  
  355. ;    if (StrCmpNC(argv[3],"ASCII")) 
  356.     move.l    #L100,-(a7)
  357.     move.l    $C(a2),-(a7)
  358.     bsr    _StrCmpNC
  359.     addq.w    #$8,a7
  360.     tst.l    d0
  361.     beq.b    L116
  362. L115
  363. ;    if (StrCmpNC(argv[3],"ASCII"))
  364.     bra    L132
  365. L116
  366. ;    Mode = ASCII;
  367.     moveq    #1,d4
  368. L117
  369. ;  if (!(infile = fopen(argv[1],"rb"))) 
  370.     move.l    #L101,-(a7)
  371.     move.l    4(a2),-(a7)
  372.     bsr    _fopen
  373.     addq.w    #$8,a7
  374.     move.l    d0,_infile(a4)
  375.     tst.l    _infile(a4)
  376.     bne.b    L119
  377. L118
  378. ;  if (!(infile = fopen(argv[1
  379.     bra    L133
  380. L119
  381. ;  fseek(infile,0,SEEK_END);
  382.     pea    1.w
  383.     clr.l    -(a7)
  384.     move.l    _infile(a4),-(a7)
  385.     bsr    _fseek
  386.     add.w    #$C,a7
  387. ;  len = ftell(infile);
  388.     move.l    _infile(a4),-(a7)
  389.     bsr    _ftell
  390.     addq.w    #4,a7
  391.     move.l    d0,_len(a4)
  392. ;  fseek(infile,0,SEEK_SET);
  393.     move.l    #-1,-(a7)
  394.     clr.l    -(a7)
  395.     move.l    _infile(a4),-(a7)
  396.     bsr    _fseek
  397.     add.w    #$C,a7
  398. ;  if (ferror(infile)) 
  399.     move.l    _infile(a4),-(a7)
  400.     bsr    _ferror
  401.     addq.w    #4,a7
  402.     tst.l    d0
  403.     beq.b    L121
  404. L120
  405. ;  if (ferror(infile)) goto 
  406.     bra    L133
  407. L121
  408. ;  if (!(outfile = fopen(argv[2],"w"))) 
  409.     move.l    #L102,-(a7)
  410.     move.l    $8(a2),-(a7)
  411.     bsr    _fopen
  412.     addq.w    #$8,a7
  413.     move.l    d0,_outfile(a4)
  414.     tst.l    _outfile(a4)
  415.     bne.b    L123
  416. L122
  417. ;  if (!(outfile = fopen(argv[
  418.     bra    L134
  419. L123
  420. ;    fprintf(outfile,"/* Converted with binary to C-include.  (c)
  421.     move.l    _len(a4),-(a7)
  422.     move.l    4(a2),-(a7)
  423.     move.l    #L103,-(a7)
  424.     move.l    _outfile(a4),-(a7)
  425.     bsr    _fprintf
  426.     add.w    #$10,a7
  427. ;  switch (Mode)
  428.     cmp.b    #0,d4
  429.     beq.b    L124
  430.     cmp.b    #1,d4
  431.     beq.b    L125
  432.     bra.b    L126
  433. ;  
  434. ;    
  435. L124
  436. ;    
  437. ;      conv = ConvertBinary();
  438.     bsr    _ConvertBinary
  439.     move.l    d0,d2
  440. ;      
  441.     bra.b    L126
  442. L125
  443. ;    
  444. ;      conv = ConvertASCII();
  445.     bsr    _ConvertASCII
  446.     move.l    d0,d2
  447. ;      
  448. L126
  449. ;  if (conv == CONV_OKAY) 
  450.     tst.l    d2
  451.     bne.b    L128
  452. L127
  453. ;  if (conv == CONV_OKAY) fputs("\n};\n",out
  454.     move.l    _outfile(a4),-(a7)
  455.     move.l    #L104,-(a7)
  456.     bsr    _fputs
  457.     addq.w    #$8,a7
  458. L128
  459. ;  fclose(outfile);
  460.     move.l    _outfile(a4),-(a7)
  461.     bsr    _fclose
  462.     addq.w    #4,a7
  463. ;  fclose(infile);
  464.     move.l    _infile(a4),-(a7)
  465.     bsr    _fclose
  466.     addq.w    #4,a7
  467. ;  switch (conv)
  468.     cmp.l    #1,d2
  469.     beq    L135
  470.     cmp.l    #2,d2
  471.     beq    L136
  472.     bra.b    L131
  473. ;  
  474. ;  
  475. L129
  476. ;    goto 
  477.     bra    L135
  478. L130
  479. ;    goto 
  480.     bra    L136
  481. L131
  482. ;  exit(0);
  483.     clr.l    -(a7)
  484.     bsr    _exit
  485.     addq.w    #4,a7
  486. L132
  487. ;  printf("Invalid parameters !\n\nUsage is: %s <infile> <outfile> 
  488.     move.l    (a2),-(a7)
  489.     move.l    #L105,-(a7)
  490.     bsr    _printf
  491.     addq.w    #$8,a7
  492. ;  exit(20);
  493.     pea    $14.w
  494.     bsr    _exit
  495.     addq.w    #4,a7
  496. L133
  497. ;  printf("%s: Couldn't open %s.\nProgram terminated !\n",argv[0],a
  498.     move.l    4(a2),-(a7)
  499.     move.l    (a2),-(a7)
  500.     move.l    #L106,-(a7)
  501.     bsr    _printf
  502.     add.w    #$C,a7
  503. ;  exit(10);
  504.     pea    $A.w
  505.     bsr    _exit
  506.     addq.w    #4,a7
  507. L134
  508. ;  fclose(infile);
  509.     move.l    _infile(a4),-(a7)
  510.     bsr    _fclose
  511.     addq.w    #4,a7
  512. ;  printf("%s: Couldn't create %s.\nProgram terminated !\n",argv[0]
  513.     move.l    $8(a2),-(a7)
  514.     move.l    (a2),-(a7)
  515.     move.l    #L107,-(a7)
  516.     bsr    _printf
  517.     add.w    #$C,a7
  518. ;  exit(10);
  519.     pea    $A.w
  520.     bsr    _exit
  521.     addq.w    #4,a7
  522. L135
  523. ;  printf("%s: Couldn't read in %s.\nProgram terminated !\n",argv[0
  524.     move.l    4(a2),-(a7)
  525.     move.l    (a2),-(a7)
  526.     move.l    #L108,-(a7)
  527.     bsr    _printf
  528.     add.w    #$C,a7
  529. ;  exit(10);